Materialsubstitution
Die Materialfindung oder Materialsubstitution kann per Customizing anhand Konditionstabellen eingestellt und konfiguriert werden. Das Ermitteln der zu ersetzenden Materialien kann entweder statisch programmiert werden. Das einzig Richtige ist aber natürlich ein Baustein mit dynamischen Zugriff.
Vorwort
Das Ersetzungsschema kann individuell eingestellt werden. Zu einer Auftragsart kann dann ein entsprechendes Schema zugeordnet werden.
Die Materialsubstitution kann in mehreren Stufen erfolgen (Zugriffsfolge). Die einzelnen Materialersetzungen werden mit Transaktion VB12 gepflegt.
Strukturen
Folgende Strukturen und Felder benötigen wir:
DATA lv_kalsu TYPE kalsu.
DATA lt_konddp TYPE STANDARD TABLE OF konddp.
DATA ls_konddp TYPE konddp.
DATA ls_komkd TYPE komkd.
DATA ls_kompd TYPE kompd.
Vorbereitungen
Zuerst benötigen wir das zur Auftragsart zugeordnete Schema. Da wir für die Kommunikationsstruktur auch den Vertriebsbelegtyp benötigen, lesen wir den gleich mit:
DATA lv_kalsu TYPE kalsu.
*** calc scheme and document type
SELECT SINGLE kalsu vbtyp
FROM tvak
INTO (lv_kalsu, ls_komkd-vbtyp)
WHERE auart = lv_auart.
Dann müssen noch die Kommunikationsstrukturen gefüllt werden:
MOVE-CORRESPONDING my_struc TO ls_komkd.
MOVE-CORRESPONDING my_struc TO ls_kompd.
ls_kompd-matnr = my_matnr.
ls_kompd-matwa = my_matnr.
Materialersetzung
Nun können wir den SAP-Standardbaustein aufrufen und die Findung durchführen lassen:
*** substitution
CALL FUNCTION ‘PRODUCT_SUBSTITUTION’
EXPORTING
application = ‘V’
date = sy-datum
dialog = ‘X’
header_communication = ls_komkd
item_communication = ls_kompd
scheme = lv_kalsu
TABLES
konddp_data = lt_konddp.
IF lt_konddp IS NOT INITIAL.
*** Replace material
READ TABLE lt_konddp INTO ls_konddp INDEX 1.
IF sy-subrc = 0.
lv_replaced_matnr = ls_konddp-smatn.
ENDIF.
ENDIF.
In lv_Replaced_Matnr steht dann die umgesetzte Materialnummer.
- Interview mit Björn Schulz (Software-Heroes.com) - 3. September 2024
- Daten aus ALV ermitteln - 3. September 2024
- So lange es den SAPGUI noch gibt… - 27. Juni 2024